package com.qf.user.controller;

import com.qf.user.exception.UnkownUsernameException;
import com.qf.user.model.JsonModel;
import com.qf.user.model.TbUser;
import com.qf.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;

//controller层：处理请求
@Controller //定义本类为controller控制器且交给spring管理
@RequestMapping("user") //该注解处理请求地址的映射
public class UserController {
    @Autowired  //该注解在变量上表示根据类型完成自动装配
    //这里也可以用@Resource注解，功能同@Autowired一样
    private UserService userService;

    @RequestMapping("login")
    @ResponseBody  //将java对象转为json格式的数据，需要导入jackson-databind依赖
    public JsonModel login(String username,String password,HttpSession session){
        //如果需要将数据存储进session域，则需要导入servlet依赖，并在参数中加上HttpSession
        TbUser user = null;
        //直接向前端传递数字0/1表示查询成功或失败是很不好的习惯
        //应该将查询结果封装到对象中再传递给前端
        JsonModel jsonModel = new JsonModel();
        try {
            //如果查询成功就返回状态码1，并将首页对象封装返回给前端
            user = userService.login(username, password);
            jsonModel.setCode(1);
            jsonModel.setObj("index.jsp");
            //将用户信息存储到session域
            session.setAttribute("user", user);
        } catch (UnkownUsernameException e){
            //如果失败就封装状态码和提示返回给前端
            e.printStackTrace();
            jsonModel.setCode(0);
            jsonModel.setObj("用户名不存在，请注册");
        } catch (Exception e) {
            jsonModel.setCode(0);
            jsonModel.setObj("用户名或密码错误");
        }
        return jsonModel;
    }
}
